/// @tags: DPonContiguousBlocks
#include <cstdio>
#include <cstring>
#include <iostream>

using namespace std;

namespace BlueQuantum {

typedef long long LL;

int const N = 5e3 + 5;

int x[N], a[N], b[N], c[N], d[N];
LL f[N][N];

inline int main() {
  int n, s, e;
  cin >> n >> s >> e;
  for (int i = 1; i <= n; ++i) cin >> x[i];
  for (int i = 1; i <= n; ++i) cin >> a[i], a[i] += x[i];
  for (int i = 1; i <= n; ++i) cin >> b[i], b[i] -= x[i];
  for (int i = 1; i <= n; ++i) cin >> c[i], c[i] += x[i];
  for (int i = 1; i <= n; ++i) cin >> d[i], d[i] -= x[i];
  memset(f, 0x3f, sizeof(f));
  f[1][1] = (s != 1 ? b[1] : 0) + (e != 1 ? d[1] : 0);
  for (int i = 2; i < n; ++i) {
    if (i != s && i != e) {
      for (int j = (i > s && i > e ? 2 : 1); j <= i; ++j) {
        if (i <= s || j != 1) f[i][j] = min(f[i][j], f[i - 1][j] + b[i] + c[i]);
        if (i <= e || j != 1) f[i][j] = min(f[i][j], f[i - 1][j] + a[i] + d[i]);
        f[i][j + 1] = min(f[i][j + 1], f[i - 1][j] + b[i] + d[i]);
        if (j != 1) f[i][j - 1] = min(f[i][j - 1], f[i - 1][j] + a[i] + c[i]);
      }
    } else if (i == s) {
      for (int j = 1; j <= i; ++j) {
        f[i][j] = min(f[i][j], f[i - 1][j] + c[i]);
        f[i][j + 1] = min(f[i][j + 1], f[i - 1][j] + d[i]);
      }
    } else if (i == e) {
      for (int j = 1; j <= i; ++j) {
        f[i][j + 1] = min(f[i][j + 1], f[i - 1][j] + b[i]);
        f[i][j] = min(f[i][j], f[i - 1][j] + a[i]);
      }
    }
  }
  cout << f[n - 1][1 + (s != n && e != n)] + (s != n ? a[n] : 0) + (e != n ? c[n] : 0);
  return 0;
}

}  // namespace BlueQuantum

int main() {
#ifndef ONLINE_JUDGE
#ifdef LOCAL
  freopen("/tmp/CodeTmp/testdata.in", "r", stdin);
  freopen("/tmp/CodeTmp/testdata.out", "w", stdout);
#else
  freopen("CF704B Ant Man.in", "r", stdin);
  freopen("CF704B Ant Man.out", "w", stdout);
#endif
#endif

  ios::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);
  return BlueQuantum::main();
}
